package principal;

import java.util.*;

public class Persona {

	// Atributos
	
	private String nombre;
	private Persona pareja;
	private Hashtable<String, Integer> ranking;
	private ArrayList<String> rankingNom;
	private Boolean soltero; // false si esta comprometido o casado
	private int actualRanking;
	
	// funciones
	
	public Persona (String nom, ArrayList<String> preferencia){
		
		this.pareja = null;
		this.soltero = true;
		this.nombre = nom;
		this.actualRanking= 1;
		this.rankingNom= new ArrayList<String> (preferencia);
		this.setRanking(preferencia);
		
			
	}

	private void setRanking(ArrayList<String> preferencia) {
		this.ranking = new Hashtable<String, Integer> ();
		
		for (int i=0; i<preferencia.size(); i++){
			this.ranking.put(preferencia.get(i), i+1);
		}
	}

	public String getNombre(){
		
		return this.nombre;
	}

	public Boolean estaSoltero(){
		
		return this.soltero;
	}
	
	public Persona getPrometido(){
		
		return this.pareja;
	}
	
	public String proximaPropuesta (){
		
		String proximo= this.rankingNom.get(this.actualRanking-1);
		
		this.actualRanking++;
		return proximo;
	}
	
	public void comprometer (Persona postulante){
		
		this.pareja=postulante;
		this.soltero=false;
	}
	
	public void separar(){
		
		this.pareja=null;
		this.soltero=true;
	}
	
	
	public Boolean esMejorPostulante(Persona postulante){
	
		if (this.soltero) return true;
		
		return this.ranking.get(postulante.getNombre()) <= this.ranking.get(this.pareja.getNombre());
		
	}
}
